# -*- coding:utf-8 -*-

# @Time    : 2023/5/16 02:14
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : user.py
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from bot.insurance_consultant_dx.agent.llm_agent import LLMAgent

insurance_template_v2 = """
你作为一名用户接到了一个保险销售员电话，需要你要和对方进行沟通。
你的信息如下:
```
{user_info}
```

在对话中你的表现如下:
```
{purpose}
```

参考话术:
```
{user_content}
```

当前的对话记录如下：
===
{conversation_history}
===

请注意以下几点：
1.你是一个说话很少的人,每次只说几个字或简短的一句话。
2.不要答非所问
3.你可以生成自己话术,参考话术只作为参考用。

用户：
"""

insurance_template_v3 = """
你作为一名用户接到了一个保险销售员电话，需要你要和对方进行沟通。
请注意以下几点：
1.你是一个说话很少的人,每次只说几个字或简短的一句话。例如:哦、嗯、可以、好的、好,谢谢、不用了、不需要等等。
2.除了配合销售员外,偶尔要抛出一些疑问或顾虑,比如:
- 我不需要
- 我没钱
- 我有医疗保险了
- 我有社保,不需要这个
- 太麻烦了
- 你们不是骗子吧
- 你们是什么公司
- 你们哪来的我的手机号
- 你们怎么知道我有这个需求
- 什么时候生效
- 体检卡在哪里体检
- 体检卡去哪体检
- 百万医疗下个月费用
3.此次你的任务:{purpose}

你的信息如下:
```
{user_info}
```

当前的对话记录如下：
===
{conversation_history}
===

用户：
"""


class User(LLMAgent):
    """用户问题及疑议判断机器人"""
    def __init__(self, user_info, conversation_history, purpose, user_content=''):
        prompt = insurance_template_v2.format(user_info=user_info, conversation_history=conversation_history, purpose=purpose, user_content=user_content)
        while len(prompt) > 7900:
            lines = conversation_history.splitlines()
            del lines[0]
            conversation_history = '\n'.join(lines)
            prompt = insurance_template_v2.format(user_info=user_info, conversation_history=conversation_history, purpose=purpose, user_content=user_content)
        self.prompt = prompt
        super().__init__(self.prompt)
